
public class taquin {
	public int[][] t=new int[3][3];
	String id;
	int nbfils=0;
	private int cout,heuristique;
	public taquin(int[][] t,String id)
	{
		this.t=t;
		this.id=id;
		
	}
	
	public taquin()
	{
	
	}
	
	public int getCout() {
		return cout;
	}

	public void setCout(int cout) {
		this.cout = cout;
	}

	public int getHeuristique() {
		return heuristique;
	}

	public void setHeuristique(int heuristique) {
		this.heuristique = heuristique;
	}

	public void permute(int[][] ta,point a,point b)
	{
		
		
		int val=ta[a.getX()][a.getY()];
		ta[a.getX()][a.getY()]=ta[b.getX()][b.getY()];
		ta[b.getX()][b.getY()]=val;
		
	
	}
	public point recherche0(int[][] ta)
	{
		 for (int i = 0; i < ta.length; i++) {
				for (int j = 0; j < ta.length; j++) {
					if(ta[i][j]==0)
					{
						point p=new point();
						p.setX(i);
						p.setY(j);
						return p;
					}
				}
			}
		 return null;
	}
	public int[][] permute0bas()
	{ 
		 int[][] taquin=new int[3][3];
		 for (int i = 0; i < t.length; i++) {
				for (int j = 0; j < t.length; j++) {
					taquin[i][j]=this.t[i][j];
				}
			}
		 point p1=	 recherche0(taquin);
		 int x,y;
		 x=p1.getX();
		 y=p1.getY();
		if(x<2)
		{
			point p=new point();
			p.setX(x+1);
			p.setY(y);
			permute(taquin,p,p1);
			return taquin;
		}
		
		else return null;
		}
	
	public int[][] permute0haut()
	{int[][] taquin=new int[3][3];
	 for (int i = 0; i < t.length; i++) {
			for (int j = 0; j < t.length; j++) {
				taquin[i][j]=this.t[i][j];
			}
		}
	 point p1=	 recherche0(taquin);
	 int x,y;
	 x=p1.getX();
	 y=p1.getY();
	if(x>=1)
	{
		point p=new point();
		p.setX(x-1);
		p.setY(y);
		permute(taquin,p,p1);
		return taquin;
	}
	
	else return null;
		}
	public int[][] permute0droite()
	{int[][] taquin=new int[3][3];
	 for (int i = 0; i < t.length; i++) {
			for (int j = 0; j < t.length; j++) {
				taquin[i][j]=this.t[i][j];
			}
		}
	 point p1=	 recherche0(taquin);
	 int x,y;
	 x=p1.getX();
	 y=p1.getY();
	if(y<2)
	{
		point p=new point();
		p.setX(x);
		p.setY(y+1);
		permute(taquin,p,p1);
		return taquin;
	}
	
	else return null;
		}
	
	public int[][] permute0gauche()
	{int[][] taquin=new int[3][3];
	 for (int i = 0; i < t.length; i++) {
			for (int j = 0; j < t.length; j++) {
				taquin[i][j]=this.t[i][j];
			}
		}
	 point p1=	 recherche0(taquin);
	 int x,y;
	 x=p1.getX();
	 y=p1.getY();
	if(y>=1)
	{
		point p=new point();
		p.setX(x);
		p.setY(y-1);
		permute(taquin,p,p1);
		return taquin;
	}
	
	else return null;
		}

}
